gtk_font_chooser_set_font
gtk_font_chooser_get_font_desc
gtk_font_chooser_set_font_desc
+gtk_font_chooser_get_font_features
+gtk_font_chooser_get_font_language
gtk_font_chooser_get_preview_text
gtk_font_chooser_set_preview_text
gtk_font_chooser_get_show_preview_entry
PangoFontFace *font_face;
PangoFontMap *font_map;
gint font_size;
+ char *font_features;
+ char *language;
gchar *preview_text;
GtkFontFilterFunc font_filter;
gpointer font_filter_data;
g_free (priv->fontname);
priv->fontname = NULL;
+
+ g_free (priv->font_features);
+ priv->font_features = NULL;
+
+ g_free (priv->language);
+ priv->language = NULL;
}
static void
case GTK_FONT_CHOOSER_PROP_FONT_DESC:
g_value_set_boxed (value, gtk_font_button_get_font_desc (font_button));
break;
+ case GTK_FONT_CHOOSER_PROP_FONT_FEATURES:
+ g_value_set_string (value, priv->font_features);
+ break;
+ case GTK_FONT_CHOOSER_PROP_LANGUAGE:
+ g_value_set_string (value, priv->language);
+ break;
case GTK_FONT_CHOOSER_PROP_LEVEL:
g_value_set_enum (value, priv->level);
break;
if (priv->font_face)
g_object_ref (priv->font_face);
priv->font_size = gtk_font_chooser_get_font_size (font_chooser);
+ g_free (priv->font_features);
+ priv->font_features = gtk_font_chooser_get_font_features (font_chooser);
+ g_free (priv->language);
+ priv->language = gtk_font_chooser_get_language (font_chooser);
/* Set label font */
gtk_font_button_update_font_info (font_button);
}
static gchar *
-pango_font_description_to_css (PangoFontDescription *desc)
+pango_font_description_to_css (PangoFontDescription *desc,
+ const char *features,
+ const char *language)
{
GString *s;
PangoFontMask set;
{
g_string_append_printf (s, "font-size: %dpt", pango_font_description_get_size (desc) / PANGO_SCALE);
}
+ if (features)
+ {
+ g_string_append_printf (s, "font-feature-settings: %s;", features);
+ }
g_string_append (s, "}");
if (!priv->use_size)
pango_font_description_unset_fields (desc, PANGO_FONT_MASK_SIZE);
- data = pango_font_description_to_css (desc);
+ data = pango_font_description_to_css (desc, priv->font_features, priv->language);
gtk_css_provider_load_from_data (priv->provider, data, -1);
g_free (data);
GTK_FONT_CHOOSER_LEVEL_FONT,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
+ /**
+ * GtkFontChooser:font-features:
+ *
+ * The selected font features, in a format that is compatible with
+ * CSS and with Pango attributes.
+ *
+ * Since: 3.94
+ */
+ g_object_interface_install_property
+ (iface,
+ g_param_spec_string ("font-features",
+ P_("Font features"),
+ P_("Font features as a string"),
+ "",
+ GTK_PARAM_READABLE));
+
+ /**
+ * GtkFontChooser:language:
+ *
+ * The language for which the #GtkFontChooser:font-features were
+ * selected, in a format that is compatible with CSS and with Pango
+ * attributes.
+ *
+ * Since: 3.94
+ */
+ g_object_interface_install_property
+ (iface,
+ g_param_spec_string ("language",
+ P_("Language"),
+ P_("Language for which features have been selected"),
+ "",
+ GTK_PARAM_READABLE));
+
/**
* GtkFontChooser::font-activated:
* @self: the object which received the signal
return level;
}
+
+/**
+ * gtk_font_chooser_get_font_features:
+ * @fontchooser: a #GtkFontChooser
+ *
+ * Gets the currently-selected font features.
+ *
+ * Returns: the currently selected font features
+ * Since: 3.94
+ */
+char *
+gtk_font_chooser_get_font_features (GtkFontChooser *fontchooser)
+{
+ char *text;
+
+ g_return_val_if_fail (GTK_IS_FONT_CHOOSER (fontchooser), NULL);
+
+ g_object_get (fontchooser, "font-features", &text, NULL);
+
+ return text;
+}
+
+/**
+ * gtk_font_chooser_get_language:
+ * @fontchooser: a #GtkFontChooser
+ *
+ * Gets the currently-selected language for font features.
+ *
+ * Returns: the currently selected language
+ * Since: 3.94
+ */
+char *
+gtk_font_chooser_get_language (GtkFontChooser *fontchooser)
+{
+ char *text;
+
+ g_return_val_if_fail (GTK_IS_FONT_CHOOSER (fontchooser), NULL);
+
+ g_object_get (fontchooser, "language", &text, NULL);
+
+ return text;
+}
GDK_AVAILABLE_IN_3_94
GtkFontChooserLevel
gtk_font_chooser_get_level (GtkFontChooser *fontchooser);
+GDK_AVAILABLE_IN_3_94
+char * gtk_font_chooser_get_font_features (GtkFontChooser *fontchooser);
+GDK_AVAILABLE_IN_3_94
+char * gtk_font_chooser_get_language (GtkFontChooser *fontchooser);
G_END_DECLS
g_object_class_override_property (klass,
GTK_FONT_CHOOSER_PROP_LEVEL,
"level");
+ g_object_class_override_property (klass,
+ GTK_FONT_CHOOSER_PROP_FONT_FEATURES,
+ "font-features");
+ g_object_class_override_property (klass,
+ GTK_FONT_CHOOSER_PROP_LANGUAGE,
+ "language");
}
/**
GTK_FONT_CHOOSER_PROP_PREVIEW_TEXT,
GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY,
GTK_FONT_CHOOSER_PROP_LEVEL,
+ GTK_FONT_CHOOSER_PROP_FONT_FEATURES,
+ GTK_FONT_CHOOSER_PROP_LANGUAGE,
GTK_FONT_CHOOSER_PROP_LAST
} GtkFontChooserProp;
case GTK_FONT_CHOOSER_PROP_LEVEL:
g_value_set_enum (value, gtk_font_chooser_widget_get_level (fontchooser));
break;
+ case GTK_FONT_CHOOSER_PROP_FONT_FEATURES:
+ g_value_set_string (value, fontchooser->priv->font_features);
+ break;
+ case GTK_FONT_CHOOSER_PROP_LANGUAGE:
+ g_value_set_string (value, pango_language_to_string (fontchooser->priv->font_language));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
{
g_free (priv->font_features);
priv->font_features = g_string_free (s, FALSE);
+ g_object_notify (G_OBJECT (fontchooser), "font-features");
}
else
g_string_free (s, TRUE);
if (priv->font_language != lang)
{
priv->font_language = lang;
+ g_object_notify (G_OBJECT (fontchooser), "language");
}
}